//对于axios进行二次封装
import axios from 'axios'
import nprogress from 'nprogress'
// 引入进度条样式
import "nprogress/nprogress.css"
// nprogress的start和done方法分别表示进度条的开始和结束
// 引入store
import store from '../store/index'
// 1:利用axios对象的方法create，创建一个axios示例
//2：request就是axios，需要稍微配置一些
const requests = axios.create({
        //配置对象 基础路径请求时候路径会出现api
        baseURL: "/api",
        // 请求超时时间
        timeout: 5000,
    })
    //请求拦截器 在请求之前拦截并处理
requests.interceptors.request.use((config) => {

        // 进度条开始
        if (store.state.detail.uuid_token) {
            // 请求头添加一个字段已有(userTemId)
            config.headers.userTempId = store.state.detail.uuid_token
        }
        // 需要判断携带token给服务器
        if (store.state.user.token) {
            config.headers.token = store.state.user.token
        }
        nprogress.start();

        // config配置对象，对象里面的响应头
        return config
    })
    //响应拦截器
requests.interceptors.response.use((res) => {
    // 成功后回调函数返回数据

    nprogress.done();
    return res.data;
}, (Error) => {
    // 失败后直接结束
    return Promise.reject(new Error('faile'));

})
export default requests;